<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 1. 弹出弹窗：选择：1.登录  2.注册
        // 2. 选择2注册
        // 3. 请输入账号（4-10位，包含数字或字母，字母开头）
        // 4. 格式不正确，提示重新输入
        // 4.1 格式正确后，验证账号是否已经存在
        // 5. 请输入密码（6-20位，数字字母下划线，大写字母开头）
        // 6. 格式不正确，提示重新输入
        // 7. 确认密码（验证和上一次输入的密码是否相同）
        // 8. 注册成功，返回第一步
        // 9. 选择 1.登录
        // 10. 输入账号
        // 11. 输入密码
        // 12. 可以使用刚刚注册账号登录成功

        // 保存所有的账号密码信息
        let users = [
            { account: 'a12345', password: '1' },
        ];

        main();


        // 注册
        function register() {
            const account = prompt("请输入账号：");
            //（4-10位，包含数字或字母，字母开头）
            let accountRe = /^[a-zA-Z][\da-zA-Z]{3,9}$/;
            if (accountRe.test(account)) {
                // 进入if，则表示账号格式正确

                // 判断账号是否存在
                const isHave = users.some(item => item.account == account);
                if (isHave) {
                    alert("该账号已存在，请重新输入");
                    register();
                } else {
                    // 进入else，表示账号不存在，可用
                    inputPassword(account);
                }

            } else {
                alert("账号格式不正确，请重新输入。");
                register();
            }
        }

        function inputPassword(account) {
            const password = prompt("请输入密码（6-20位，数字字母下划线，大写字母开头）：");
            // （6-20位，数字字母下划线，大写字母开头）
            let passwordRe = /^[A-Z]\w{5,19}$/;
            if (passwordRe.test(password)) {
                while (true) {
                    const password2 = prompt("请确认密码：");
                    if (password == password2) {
                        alert("注册成功");
                        users.push({
                            account,
                            password
                        });
                        return;
                    } else {
                        alert("两次密码不一致，请重新输入");
                    }
                }
            } else {
                // 进入else，说明密码格式不正确
                alert("密码格式错误，请重新输入");
                inputPassword();
            }
        }

        // 进入系统主流程
        function main() {
            alert("欢迎使用！");
            while (true) {
                const option = prompt('请选择：1.登录 2.注册');
                switch (option) {
                    case "1":
                        login();
                        return;
                    case "2":
                        register();
                        break;
                    default:
                        alert("输入有误，请重新输入。");
                }
            }
        }

        // 登录
        function login() {
            const account = prompt("请输入账号:");
            const password = prompt("请输入密码:");

            // some：找到了返回true，找不到返回false
            // const isLogin = users.some(item => item.account == account && item.password == password);
            // if (isLogin) {
            //     alert("登录成功");
            // } else {
            //     alert("登录失败");
            // }
            // find：找到了，返回找到的数据本身，找不到，返回undefined
            const userItem = users.find(item => item.account == account && item.password == password);
            if (userItem) {
                alert("登录成功");
            } else {
                alert("登录失败");
            }

        }



    </script>
</body>

</html>